class Person {
  // 使用readonly关键字修饰属性，使其只读，不能被修改
  // 若默认赋值，则需要声明变量类型，否则类型推断为字面量类型
  readonly age: number = 18
  constructor(age: number) {
    this.age = age
  }
  // readonly scaleAge() {
  //   // this.age = 20  // 报错，readonly属性不能被修改
  // }
}

const obj: { readonly name: string } = { name: 'why' }

interface IPerson {
  readonly name: string
}

const p: IPerson = {
  name: 'why'
}

console.log(obj)
console.log(p)  